package fr.syntheses.blog.Model.DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;


import fr.syntheses.blog.Service.ApplicationListener;
import fr.syntheses.blog.Service.GestionBaseDeDonnees;
import fr.syntheses.blog.beans.Article;
import fr.syntheses.blog.beans.Utilisateur;
import fr.syntheses.blog.Model.DAO.ModeleDAO;
import fr.syntheses.blog.Model.Mapping.Mapper;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Query;
import org.hibernate.Transaction;


public class UtilisateurDAOH extends ModeleDAO{

	Logger log = Logger.getLogger(currentClassToLog);

	// Variables
	Connection connexion=null;
	ResultSet resultat=null;
	private List<Utilisateur> listeUtilisateur;
	// Mapper
	Mapper mapper = new Mapper();

    

    // retourner la liste des clients
	public List<Utilisateur> getListeUtilisateur()
	{	
		listeUtilisateur = new ArrayList<Utilisateur>();
		Session session = null;
		Query query = null;
		
		try {
		//HibernateUtil.createSessionFactory();
		
		session = HibernateUtil.getSession();
		
		try {
			query = session.createQuery("from Utilisateur order by login");
			Iterator utilisateurs = query.iterate();
			
			while (utilisateurs.hasNext()) {
				listeUtilisateur.add((Utilisateur) utilisateurs.next());
			}

		} finally {
//			if (session.isOpen()) {
//				session.close();
//			}
			
			//A voir ...
		}
		} catch (HibernateException e) {
			log.fatal("/* ATTENTION GRAVE ERREUR LORS DE LA CREATION DE LA SESSION FACTORY HB */");
			log.fatal(e);
		} finally {
			//HibernateUtil.closeSessionFactory();
		}
		return listeUtilisateur;
	}
	
   
    
 // trouver un utilisateur dans la base
 	public Utilisateur getUtilisateur(Utilisateur utilisateur) 
 	{

 		// Variables
	 		Utilisateur user=null;
			Session session = null;
			Query query = null;
			
			try {
			//HibernateUtil.createSessionFactory();
			
			session = HibernateUtil.getSession();
			
			try {
				query = session.createQuery("from Utilisateur WHERE login = :login and motdepasse = :motdepasse");
				query.setString("login", utilisateur.getLogin());
				query.setString("motdepasse", utilisateur.getMotdepasse());
				user = (Utilisateur) query.uniqueResult();

			} finally {
//				if (session.isOpen()) {
//					session.close();
//				}
				
				//A voir ...
			}
			} catch (HibernateException e) {
				log.fatal("/* ATTENTION GRAVE ERREUR LORS DE LA CREATION DE LA SESSION FACTORY HB */");
				log.fatal(e);
			} finally {
				//HibernateUtil.closeSessionFactory();
			}
			return user;
 	} 

 	
	public String  getMdp(String email){

		String motdepasse="";
		Session session = null;
		Query query = null;
		
		try {
		//HibernateUtil.createSessionFactory();
		
		session = HibernateUtil.getSession();
		
		try {
			query = session.createQuery("from Utilisateur WHERE email = :email");
			query.setString("email", email);
			motdepasse = (String) query.uniqueResult();
			
		} finally {
//			if (session.isOpen()) {
//				session.close();
//			}
			
			//A voir ...
		}
		} catch (HibernateException e) {
			log.fatal("/* ATTENTION GRAVE ERREUR LORS DE LA CREATION DE LA SESSION FACTORY HB */");
			log.fatal(e);
		} finally {
			//HibernateUtil.closeSessionFactory();
		}
		return motdepasse;
	}

 	
 	public void create() {
		throw new UnsupportedOperationException();
	}

	public void read() {
		throw new UnsupportedOperationException();
	}

	public void update() {
		throw new UnsupportedOperationException();
	}

	public void delete() {
		throw new UnsupportedOperationException();
	}
}